<?php namespace Common\Model;
use Hdphp\Model\Model;
class Arc extends Model{
	//指定表名
	protected $table='article';
	//自动验证指定信息
	protected $validate=array(
		//array(字段名，验证方法，错误信息，验证条件，验证时间)
		array('title','required','文章标题不能为空',3,3),
		array('author','required','作者名不能为空',3,3),
		array('category_cid','required','所属分类不能为空',3,3),
		// array('author','required','作者名不能为空',3,3),
		// array('author','required','作者名不能为空',3,3),
		// array('author','required','作者名不能为空',3,3),
		
	);
	//自动完成
	protected $auto=array(
		//array(字段名，处理方法，方法类型，验证时间)
		array('sendtime','time','function',3,1),
		array('updatetime','time','function',3,3),
		array('user_uid','getUid','method',3,1),
		array('thumb','getThumb','method',3,3)
	);
	//通过session获取用户的uid
	public function getUid(){
		return $_SESSION['info']['uid'];
	}
	//获取缩略图地址
	public function getThumb(){
		//获取编辑页面旧缩略图的值
		$oldImg=Q('post.thumb');
		//如果没有上传图片返回空字符串
		if($_FILES['thumb']['error']==4){
			if($oldImg){
				return $oldImg;
			}
			return '';
		}

		//设置允许上传图片的格式
		$files=Upload::type('jpg,jpeg,png,gif')->make();
		// P($files);die;
		if($files){
			if($oldImg){
				unlink($oldImg);
				$path=str_replace("_thumb",'',$oldImg);
				unlink($path);

			}
			//如果上传成功返回上传地址给数据库
			$img=Image::thumb($files[0]['path'],str_replace(".{$files[0]['ext']}","_thumb.{$files[0]['ext']}",$files[0]['path']),200,200,6);
  			return $img;
			// return $files[0]['path'];
		}
		//如果上传失败把上传错误压入到错误属性，使控制器可以通过getError来调取
		$this->error=Upload::getError();
	}

	//添加
	public function store(){
		//1.调用自动验证函数  先验证数据
		if(!$this->check()) return false;
		//2.数据添加
		 	//添加article表的数据
		 	    //获取添加文章的自增id，固定写法
		 	$aid=$this->add();
		 	//添加article_data表的数据
		 	$arcData=new \Common\Model\ArcData;
		 	$arcData->create();
		 	    //向post的到的数据中追加一个当前的aid
		 	$data=$arcData->data['article_aid']=$aid;
		 	// P($data);
		 	$arcData->add();
		 	//添加article_tag中间表的数据
		 	$arcTag=new \Common\Model\ArcTag;
		 	$arcTag->store($aid);
		 	return true;
	}
	//编辑的数据库操作
	public function edit(){
		//先验证
		if(!$this->check()) return false;
		//修改
		//article
		$this->save();

		//article_tag
		$arcTag=new \Common\Model\ArcTag;
		//接受隐藏域的aid
		$aid=Q('post.aid',0,'intval');
		//为了简单先删除再添加
		$arcTag->where("article_aid={$aid}")->delete();
		$arcTag->store($aid);

		//article_data
		$arcData=new \Common\Model\ArcData;
		$arcData->create();
		$arcData->where("article_aid={$aid}")->save();

		return true;

	}
	//数据验证的方法 验证两张表
	public function check(){
		//判断是否有提交的数据 触发自动验证
		if(!$this->create()) return false;
		//判断是否上传成功
		if($this->error) return false;
		//验证article_data表
		$arcData=new \Common\Model\ArcData;
		if(!$arcData->create()){
			//把文章数据表的错误压入到文章表中 方便通过外部控制器获得错误
			$this->error=$arcData->error;
			return false;
		}
		return true;

	}
}